package com.activiti.z_six.service;

import com.activiti.z_six.controller.controllerParams.UserParams;
import com.activiti.z_six.entity.orgmanagement.DepartmentEntity;
import com.activiti.z_six.entity.orgmanagement.PositionEntity;
import com.activiti.z_six.entity.orgmanagement.RolesEntity;
import com.activiti.z_six.entity.orgmanagement.UserEntity;
import com.activiti.z_six.util.AjaxResponse;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface OrgManagementService {
    /**
     * 获取公司列表
     * @return
     */
    public AjaxResponse getCompanyList();

    /**
     * 增加公司
     * @param name
     * @param parentid
     * @return
     */
    public AjaxResponse addCompany(String name, Integer parentid);

    /**
     * 修改公司信息
     * @param id
     * @param name
     * @param parentid
     * @return
     */
    public AjaxResponse updateCompany(Integer id, String name, Integer parentid);

    /**
     * 删除公司信息
     * @param id
     * @param name
     * @param parentid
     * @return
     */
    public AjaxResponse deleteCompany(Integer id, String name, Integer parentid);

    /**
     * 获取部门列表
     * @return
     */
    public AjaxResponse getDepartmentList();

    /**
     * 根据公司下的部门
     * @param companyId
     * @return
     */
    public AjaxResponse getDeptByCompany(Integer companyId);
    /**
     * 增加部门
     * @param name
     * @param parentid
     * @param manager
     * @param leader
     * @param companyid
     * @return
     */
    public AjaxResponse addDepartment(String name, Integer parentid, String manager, String leader, Integer companyid);

    /**
     * 修改部门
     * @param id
     * @param name
     * @param parentid
     * @param manager
     * @param leader
     * @param companyid
     * @return
     */
    public AjaxResponse updateDepartment(Integer id, String name, Integer parentid, String manager, String leader, Integer companyid);

    /**
     * 删除部门
     * @param id
     * @return
     */
    public AjaxResponse deleteDepartment(Integer id);

    /**
     * 设置部门负责人
     * @param id
     * @param manager
     * @return
     */
    public AjaxResponse setDepartmentManager(Integer id, String manager);

    /**
     * 设置部门分管领导
     * @param id
     * @param leader
     * @return
     */
    public AjaxResponse setDepartmentLeader(Integer id, String leader);

    /**
     * 设置所属公司
     * @param id
     * @param companyid
     * @return
     */
    public AjaxResponse updateDeptCompany(Integer id, Integer companyid);

    /**
     * 获取组织结构数据
     * @return
     */
    public AjaxResponse getOrgData();

    /**
     * 获取岗位列表
     * @return
     */
    public List<PositionEntity> positionList();

    /**
     * 获取岗位列表--分页
     * @param page
     * @param pageSize
     * @return
     */
    public HashMap<String,Object> positionListPage(Integer page, Integer pageSize);

    /**
     * 根据用户的岗位
     * @param username
     * @return
     */
    public List<PositionEntity> positionListByUser(String username);

    /**
     * 增加岗位
     * @param name
     * @return
     */
    public AjaxResponse addPosition(String name);

    /**
     * 更新岗位信息
     * @param id
     * @param name
     * @return
     */
    public AjaxResponse updatePosition(String id,String name);

    /**
     * 删除岗位
     * @param id
     * @return
     */
    public AjaxResponse deletePosition(String id);

    /**
     * 删除用户的岗位
     * @param username
     * @return
     */
    public AjaxResponse deletePositionUser(String username);

    /**
     * 获取角色列表
     * @return
     */
    public List<RolesEntity> rolesList();

    /**
     * 获取角色列表--分页
     * @param page
     * @param pageSize
     * @return
     */
    public HashMap<String,Object> rolesListPage(Integer page,Integer pageSize);

    /**
     * 获取用户的角色
     * @param username
     * @return
     */
    public List<RolesEntity> rolesListByUser(String username);

    /**
     * 增加角色
     * @param name
     * @return
     */
    public AjaxResponse addRoles(String name);

    /**
     * 修改角色信息
     * @param id
     * @param name
     * @return
     */
    public AjaxResponse updateRoles(String id,String name);

    /**
     * 删除角色
     * @param id
     * @return
     */
    public AjaxResponse deleteRoles(String id);

    /**
     * 删除用户的角色
     * @param username
     * @return
     */
    public AjaxResponse deleteRoleUser(String username);

    /**
     * 获取人员列表
     * @return
     */
    public List<UserEntity> getUserEntities();

    /**
     * 获取人员列表--分页
     * @param page
     * @param pageSize
     * @return
     */
    public HashMap<String,Object> getUserList(Integer page,Integer pageSize);

    /**
     * 获取人员详细信息
     * @param username
     * @return
     */
    public HashMap<String,Object> getUserEntity(String username);

    /**
     * 根据部门编号查找人员
     * @param departid
     * @return
     */
    public AjaxResponse getUserByDepartId(Integer departid);

    /**
     * 增加人员
     * @param param
     * @return
     */
    public AjaxResponse addUser(UserParams param);

    /**
     * 修改人员信息
     * @param param
     * @return
     */
    public AjaxResponse updateUser(UserParams param);

    /**
     * 修改密码
     * @param oldPwd
     * @param newPwd
     * @return
     */
    public AjaxResponse updatePwd(String username,String oldPwd,String newPwd);

    /**
     * 重置密码
     * @param username
     * @return
     */
    public AjaxResponse resetPwd(String username);
    /*
    删除
     */
    public AjaxResponse deleteUser(Integer id);
}